[INFO] cloning repository https://github.com/kaiobatista/nes_emulator_rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kaiobatista/nes_emulator_rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkaiobatista%2Fnes_emulator_rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkaiobatista%2Fnes_emulator_rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 764bf31b51d3ea843fe090e676eb65195438a953
[INFO] checking kaiobatista/nes_emulator_rust against master#dc375db7d8df0aa450e622c529147c95eee756f5 for pr-156749
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkaiobatista%2Fnes_emulator_rust" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/kaiobatista/nes_emulator_rust
[INFO] finished tweaking git repo https://github.com/kaiobatista/nes_emulator_rust
[INFO] tweaked toml for git repo https://github.com/kaiobatista/nes_emulator_rust written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/kaiobatista/nes_emulator_rust on toolchain dc375db7d8df0aa450e622c529147c95eee756f5
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dc375db7d8df0aa450e622c529147c95eee756f5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/kaiobatista/nes_emulator_rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dc375db7d8df0aa450e622c529147c95eee756f5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded version-compare v0.1.1
[INFO] [stderr]   Downloaded sdl2 v0.38.0
[INFO] [stderr]   Downloaded libc v0.2.178
[INFO] [stderr]   Downloaded sdl2-sys v0.38.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5020d5bac2c7093ea566c30c68ecc63af2c8691cae83a8389006f83d06c4a3a2
[INFO] running `Command { std: "docker" "start" "5020d5bac2c7093ea566c30c68ecc63af2c8691cae83a8389006f83d06c4a3a2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5020d5bac2c7093ea566c30c68ecc63af2c8691cae83a8389006f83d06c4a3a2" "/opt/rustwide/cargo-home/bin/cargo" "+dc375db7d8df0aa450e622c529147c95eee756f5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5020d5bac2c7093ea566c30c68ecc63af2c8691cae83a8389006f83d06c4a3a2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5020d5bac2c7093ea566c30c68ecc63af2c8691cae83a8389006f83d06c4a3a2" "/opt/rustwide/cargo-home/bin/cargo" "+dc375db7d8df0aa450e622c529147c95eee756f5" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling sdl2 v0.38.0
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]    Compiling sdl2-sys v0.38.0
[INFO] [stderr]     Checking nes_emulator_rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/cpu.rs:936:29
[INFO] [stdout]     |
[INFO] [stdout] 936 |         self.registers.pc = ((high << 8) | low);
[INFO] [stdout]     |                             ^                 ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 936 -         self.registers.pc = ((high << 8) | low);
[INFO] [stdout] 936 +         self.registers.pc = (high << 8) | low ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/sdl_ui.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ppu.rs:322:29
[INFO] [stdout]     |
[INFO] [stdout] 322 |                         let mut color: Color = get_color_from_palette(final_palette_index);
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/sdl_ui.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut font = ttf_context.load_font(font_path, 20).unwrap();
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `font`
[INFO] [stdout]   --> src/sdl_ui.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut font = ttf_context.load_font(font_path, 20).unwrap();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_font`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]    --> src/sdl_ui.rs:143:50
[INFO] [stdout]     |
[INFO] [stdout] 143 |             Event::KeyDown { keycode: Some(key), repeat, ..} => {
[INFO] [stdout]     |                                                  ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]    --> src/sdl_ui.rs:156:48
[INFO] [stdout]     |
[INFO] [stdout] 156 |             Event::KeyUp { keycode: Some(key), repeat, ..} => {
[INFO] [stdout]     |                                                ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/cpu.rs:936:29
[INFO] [stdout]     |
[INFO] [stdout] 936 |         self.registers.pc = ((high << 8) | low);
[INFO] [stdout]     |                             ^                 ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 936 -         self.registers.pc = ((high << 8) | low);
[INFO] [stdout] 936 +         self.registers.pc = (high << 8) | low ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `canvas`
[INFO] [stdout]    --> src/sdl_ui.rs:327:5
[INFO] [stdout]     |
[INFO] [stdout] 327 |     canvas: &mut Canvas<Window>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/sdl_ui.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `value` is never read
[INFO] [stdout]   --> src/controller.rs:36:25
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let mut value = 0;
[INFO] [stdout]    |                         ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 45 |                 value = 1
[INFO] [stdout]    |                 --------- `value` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Header` is more private than the item `Rom::header`
[INFO] [stdout]   --> src/ines_file.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub header: Header,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ field `Rom::header` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Header` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/ines_file.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | struct Header {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/cpu.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Instruction {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 25 |     pub name: &'static str,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `irq`, `xxx`, and `cli` are never used
[INFO] [stdout]    --> src/cpu.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl<'lifetime> CPU <'lifetime> {
[INFO] [stdout]     | ------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn irq(&mut self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     fn xxx(&mut self) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 882 |     fn cli(&mut self) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_pattern_table` is never used
[INFO] [stdout]    --> src/ppu.rs:294:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl PPU {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn get_pattern_table(&self, rom: &Rom, table_idx: u8, palette_idx: u8) -> Vec<Color> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_text` is never used
[INFO] [stdout]    --> src/sdl_ui.rs:175:4
[INFO] [stdout]     |
[INFO] [stdout] 175 | fn draw_text<'a>(text: String, color: Color, position: Vec<i32>, canvas: &mut Canvas<Window>, font: &mut Font, texture_creator: &'a...
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_debug_info` is never used
[INFO] [stdout]    --> src/sdl_ui.rs:191:4
[INFO] [stdout]     |
[INFO] [stdout] 191 | fn render_debug_info<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pattern_table` is never used
[INFO] [stdout]    --> src/sdl_ui.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn render_pattern_table<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tag` and `flags7` are never read
[INFO] [stdout]   --> src/ines_file.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | struct Header {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout]  6 |     tag: [u8; 4],
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     flags7: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `header` and `trainer` are never read
[INFO] [stdout]   --> src/ines_file.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Rom {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 14 |     pub header: Header,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 15 |     pub trainer: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SELECT` is never used
[INFO] [stdout]  --> src/controller.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 |     pub const SELECT: u8 = 1 << 5;
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Button` should have a snake case name
[INFO] [stdout]  --> src/controller.rs:1:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub mod Button {
[INFO] [stdout]   |         ^^^^^^ help: convert the identifier to snake case: `button`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ppu.rs:322:29
[INFO] [stdout]     |
[INFO] [stdout] 322 |                         let mut color: Color = get_color_from_palette(final_palette_index);
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/sdl_ui.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut font = ttf_context.load_font(font_path, 20).unwrap();
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `font`
[INFO] [stdout]   --> src/sdl_ui.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut font = ttf_context.load_font(font_path, 20).unwrap();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_font`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]    --> src/sdl_ui.rs:143:50
[INFO] [stdout]     |
[INFO] [stdout] 143 |             Event::KeyDown { keycode: Some(key), repeat, ..} => {
[INFO] [stdout]     |                                                  ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]    --> src/sdl_ui.rs:156:48
[INFO] [stdout]     |
[INFO] [stdout] 156 |             Event::KeyUp { keycode: Some(key), repeat, ..} => {
[INFO] [stdout]     |                                                ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `canvas`
[INFO] [stdout]    --> src/sdl_ui.rs:327:5
[INFO] [stdout]     |
[INFO] [stdout] 327 |     canvas: &mut Canvas<Window>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `value` is never read
[INFO] [stdout]   --> src/controller.rs:36:25
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let mut value = 0;
[INFO] [stdout]    |                         ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 45 |                 value = 1
[INFO] [stdout]    |                 --------- `value` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Header` is more private than the item `Rom::header`
[INFO] [stdout]   --> src/ines_file.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub header: Header,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ field `Rom::header` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Header` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/ines_file.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | struct Header {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/cpu.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Instruction {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 25 |     pub name: &'static str,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `irq`, `xxx`, and `cli` are never used
[INFO] [stdout]    --> src/cpu.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl<'lifetime> CPU <'lifetime> {
[INFO] [stdout]     | ------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn irq(&mut self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     fn xxx(&mut self) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 882 |     fn cli(&mut self) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_pattern_table` is never used
[INFO] [stdout]    --> src/ppu.rs:294:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl PPU {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn get_pattern_table(&self, rom: &Rom, table_idx: u8, palette_idx: u8) -> Vec<Color> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_text` is never used
[INFO] [stdout]    --> src/sdl_ui.rs:175:4
[INFO] [stdout]     |
[INFO] [stdout] 175 | fn draw_text<'a>(text: String, color: Color, position: Vec<i32>, canvas: &mut Canvas<Window>, font: &mut Font, texture_creator: &'a...
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_debug_info` is never used
[INFO] [stdout]    --> src/sdl_ui.rs:191:4
[INFO] [stdout]     |
[INFO] [stdout] 191 | fn render_debug_info<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pattern_table` is never used
[INFO] [stdout]    --> src/sdl_ui.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn render_pattern_table<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tag` and `flags7` are never read
[INFO] [stdout]   --> src/ines_file.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | struct Header {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout]  6 |     tag: [u8; 4],
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     flags7: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `header` and `trainer` are never read
[INFO] [stdout]   --> src/ines_file.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Rom {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 14 |     pub header: Header,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 15 |     pub trainer: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SELECT` is never used
[INFO] [stdout]  --> src/controller.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 |     pub const SELECT: u8 = 1 << 5;
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Button` should have a snake case name
[INFO] [stdout]  --> src/controller.rs:1:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub mod Button {
[INFO] [stdout]   |         ^^^^^^ help: convert the identifier to snake case: `button`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.23s
[INFO] running `Command { std: "docker" "inspect" "5020d5bac2c7093ea566c30c68ecc63af2c8691cae83a8389006f83d06c4a3a2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5020d5bac2c7093ea566c30c68ecc63af2c8691cae83a8389006f83d06c4a3a2", kill_on_drop: false }`
[INFO] [stdout] 5020d5bac2c7093ea566c30c68ecc63af2c8691cae83a8389006f83d06c4a3a2
